package cn.com.huzo.repository.trade;

import cn.com.huzo.model.entities.trade.InspectionJournalLinesMaterialEntity;
import huzofw.repository.GenericRepository;
import java.util.List;
import java.util.Map;

/**
 * 化检日记账资材明细数据访问对象接口。
 *
 * @author 吴旭
 */
public interface InspectionJournalLinesMaterialRepository extends GenericRepository<InspectionJournalLinesMaterialEntity, String> {

    /**
     * 根据ID取得化检日记账资材明细信息。
     *
     * @param headerKey 化检日记账资材ID
     * @return 插入的数据主键
     */
    List<InspectionJournalLinesMaterialEntity> fetchByHeaderKey(Long headerKey);

    /**
     * 根据ID+款号，取得化检日记账资材某款号下的明细信息。
     *
     * @param matchValue 化检日记账资材ID及款号列表
     * @return 插入的数据主键
     */
    List<InspectionJournalLinesMaterialEntity> fetchByNoOfStyle(Map<String, Object> matchValue);

    /**
     * 根据主表ID+款号，取得需要增加的化检日记账资材明细信息。
     *
     * @param matchValue 化检日记账资材ID及款号
     * @return 插入的数据主键
     */
    List<InspectionJournalLinesMaterialEntity> fetchMaterialByNoOfStyle(Map<String, Object> matchValue);

    /**
     * 新增化检日记账资材明细信息。
     *
     * @param matchValue 引入的产品和新增加的款号明细数据
     * @return 影响的行数
     */
    Integer insert(Map<String, Object> matchValue);

    /**
     * 根据选择的资材，新增化检日记账资材明细信息。
     *
     * @param dataList 资材明细数据
     * @return 影响的行数
     */
    Integer insertSelectedData(List<InspectionJournalLinesMaterialEntity> dataList);

    /**
     * 更新化检日记账资材明细信息。
     *
     * @param dataList 要更新的数据
     * @return 影响的行数
     */
    Integer update(List<InspectionJournalLinesMaterialEntity> dataList);

    /**
     * 批量删除
     *
     * @param dataList 要删除的数据
     * @return 影响的行数
     */
    Integer batchDeleteLines(List<InspectionJournalLinesMaterialEntity> dataList);
}
